#include"SeqList.h"


// 初始化
void SeqListInit(SeqList* ps1)
{
    assert(ps1);

    ps1->_array = nullptr;
    ps1->_size = 0;
    ps1->_capacity = 0;
}

// 销毁
void SeqListDestroy(SeqList* ps1)
{
    assert(ps1);

    free(ps1->_array);
    ps1->_array = nullptr;
    ps1->_size = ps1->_capacity = 0;
}


// 尾插
void SeqListPushBack(SeqList* ps1, SLDataType x)
{
    assert(ps1);

    // 扩容
    if(ps1->_capacity == ps1->_size)
    {
        size_t newCapacity = ps1->_capacity == 0 ? 4 : ps1->_capacity * 2;
        SLDataType* arr = (SLDataType*)realloc(ps1->_array, sizeof(SLDataType) * newCapacity);
        assert(arr);
        ps1->_array = arr;
        ps1->_capacity = newCapacity;
    }

    ps1->_array[ps1->_size] = x;
    ps1->_size++;
}


// 打印
void SeqListPrint(SeqList* ps1)
{
    assert(ps1);

    for(size_t i = 0; i < ps1->_size; i++)
    {
        printf("%d ", ps1->_array[i]);
    }
    printf("\n");
}